const cron = require('node-cron');
const crawlerService = require('./services/crawler');
const mongoose = require('mongoose');
const dotenv = require('dotenv');

// 加载环境变量
dotenv.config();

// 将函数定义移到顶层
function startCrawlerSchedule() {
  console.log('启动爬虫定时任务...');

  // 定义每分钟执行一次的定时任务
  const task = cron.schedule('* * * * *', async () => {
    try {
      console.log(`[${new Date().toLocaleString()}] 开始执行爬虫任务...`);
      await crawlerService.scrapeForum();
      console.log(`[${new Date().toLocaleString()}] 爬虫任务执行完成`);
    } catch (error) {
      console.error(`[${new Date().toLocaleString()}] 爬虫任务执行出错:`, error);
    }
  });

  console.log('爬虫定时任务已启动，正在运行中...');
  return task;
}

// 在顶层导出函数
module.exports = { startCrawlerSchedule };

// 如果直接运行此文件，则连接数据库并启动爬虫
if (require.main === module) {
  console.log(`尝试连接数据库: mongodb://${process.env.DB_USERNAME}:${process.env.DB_PASSWORD}@10.0.55.56:27017/metroCrawlerTest`);
  mongoose.connect(`mongodb://${process.env.DB_USERNAME}:${process.env.DB_PASSWORD}@10.0.55.56:27017/metroCrawlerTest`)
    .then(() => {
      console.log('成功连接到 MongoDB');
      startCrawlerSchedule();
    })
    .catch(err => {
      console.error('MongoDB 连接错误:', err);
    });
}